package com.appfahrt.persistence.obj.dao.generated;

import java.util.ArrayList;
import java.sql.SQLException;

//TODO:ggf wegfallen
import android.content.Context;
import android.database.Cursor;
import android.util.Log;

import com.appfahrt.persistence.obj.AppFahrtDbDefaultDao;
import com.appfahrt.persistence.obj.dbo.AdresseDbo;
import com.appfahrt.persistence.obj.dbo.FahrzeugDbo;
import com.appfahrt.persistence.obj.utility.ReflectionUtility;
import com.appfahrt.persistence.obj.utility.Utility;

/**
 * This Class is automatically generated.<br><br>
 *
 * <br><b>DON'T MODIFY THIS FILE</b><br><br>
 *
 * Generated: Sun May 22 22:20:17 CEST 2011
 */
public class FahrzeugGeneratedDao extends AppFahrtDbDefaultDao {

	private References references = new References();
	private static final String TAG = FahrzeugGeneratedDao.class.getSimpleName();


	/**
	 * Value Holder for the finder methods 
	 * by references.
	 */
	public class References {
	
	}

	/**
	 * Constructor.
	 */
	public FahrzeugGeneratedDao(Context pContext) {
		super(pContext);
	}
	
	/**
	 * Returns the finder methods
	 * by references
	 */
	public References getReferences() {
		return this.references;
	}
/*
	public FahrzeugDbo findWithPrimaryKey() throws SQLException {
		FahrzeugDbo result = null;
		findBySqlReturnObject(
			FahrzeugDbo.class, 
			"SELECT * FROM ${schema}.fahrzeug WHERE ", 
			new Object[]{});
		return result;
	}
	@SuppressWarnings("unchecked")
	public ArrayList<FahrzeugDbo> findBySqlReturnArrayList(String sql, Object[] param) throws SQLException {
		ArrayList<FahrzeugDbo> result = null;
		result = findBySqlReturnArrayList(
			FahrzeugDbo.class, 
			sql, 
			param);
		return result;
	}
*/	
	/**
	 * Execute the given SQL Statement<br>
	 * @param sql
	 * @param param
	 * @return
	 * @throws SQLException
	 */
	public FahrzeugDbo findBySqlReturnObject(String pSql, String[] pParam) throws SQLException {
		FahrzeugDbo aResult = null;
		Cursor aValue =  findObject(pSql,pParam);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			String [] aColumns = FahrzeugDbo.COLUMNS;
			aResult = new FahrzeugDbo();
			for(int i = 0; i < aColumns.length; i++){
				Object [] aParameter = new Object[] {aValue.getString(aValue.getColumnIndex(aColumns[i]))};
				String aMethode = Utility.createJavaNameFromFieldName(false,aColumns[i]);
				ReflectionUtility.executeMethod(aResult, aMethode, aParameter);
			}
		}
		return aResult;
		
		
	}
	
	
	public FahrzeugDbo findByMarke(String pMarke){
		FahrzeugDbo aResult = null;
		String aSql = "SELECT * FROM FAHRZEUG WHERE "+FahrzeugDbo.marke+"=?";
		String [] aParam = new String []{String.valueOf(pMarke)};
		Log.e(TAG,"findByEmail: ["+pMarke+"]");
		Cursor aValue =  findObject(aSql,aParam);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			aResult = new FahrzeugDbo();
			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.ID))!=null){
				Log.e(TAG,"aValue.getString(id)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.ID)));
				aResult.setId(aValue.getLong(aValue.getColumnIndex(FahrzeugDbo.ID)));
			}
			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.marke))!=null){
				Log.e(TAG,"aValue.getString(marke)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.marke)));
				aResult.setMarke(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.marke)));
			}
			//TODO
//			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.baujahr))!=null){
//				Log.e(TAG,"aValue.getString(baujahr)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.baujahr)));
//				aResult.setBaujahr(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.baujahr)));
//			}
			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.fk_id_profil))!=null){
				Log.e(TAG,"aValue.getString(fk_id_profil)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.fk_id_profil)));
				aResult.setFkIdProfil(aValue.getLong(aValue.getColumnIndex(FahrzeugDbo.fk_id_profil)));
			}
			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.modell))!=null){
				Log.e(TAG,"aValue.getString(modell)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.modell)));
				aResult.setModell(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.modell)));
			}
			if(aValue.getString(aValue.getColumnIndex(FahrzeugDbo.sitzplaetze))!=null){
				Log.e(TAG,"aValue.getString(sitzplaetze)"+aValue.getString(aValue.getColumnIndex(FahrzeugDbo.sitzplaetze)));
				aResult.setSitzplaetze(aValue.getLong(aValue.getColumnIndex(FahrzeugDbo.sitzplaetze)));
			}
		}
		if(aValue!=null){
			aValue.close();
		}
		return aResult;
	}

// FINDER BY INDEX

// Equals


// GreaterThan, GreaterEqualThan, LessThan, LessOrEqualThan

}